<?php

namespace app\admin\model;

use think\Model;

class User extends Model
{
    /**
     * 获取所有用户列表 可根据条件查询
     */
    public function GetList($page, $option = [])
    {
        // 创建匿名函数 方便多次调用 用完自动销毁
        $buildDb = function () use ($option) {
            $db = $this;
            // start 根据指定条件查询
            if (array_key_exists('name', $option) && !empty($option['name'])) {
                $db = $this->whereLike('name', '%' . $option['name'] . '%');
            }

            if (array_key_exists('mobile', $option) && !empty($option['mobile'])) {
                $db = $this->where('mobile', $option['mobile']);
            }

            if (array_key_exists('sex', $option) && !empty($option['sex'])) {
                $db = $this->where('sex', $option['sex']);
            }

            if (array_key_exists('id', $option) && !empty($option['id'])) {
                $db = $this->where('id', $option['id']);
            }
            // -end 
            return $db;
        };

        $count = $buildDb()->count();
        $list = $buildDb()->order('id','DESC')->page($page, 50)->select();
        // 性别Map
        $genderMap = [
            '女',
            '男'
        ];
        return Result(1, '', [
            'count' => $count,
            'pageSize' => 50,
            'list' => $list,
            'genderMap' => $genderMap
        ]);

    }

    /**
     * 获取指定用户的信息 
     */
    public function GetInfo($id)
    {
        $user = $this->where('id', $id)->find();

        if ($user) {
            return Result(1, '', [
                'user' => $user->toArray()
            ]);
        }
        return Result(0, '该用户不存在');
    }

    /**
     * 删除用户
     */
    public function DeleteById($id) {
        if ($this->where('id', $id)->count() == 1) {
            $this->where('id', $id)->delete();

            return Result(1, '删除成功');
        }

        return Result(0, '提供的用户id不正确');
    }

    /**
     * 根据条件查询单个用户
     */
    public function FindUser($type, $account)
    {
        $user = $this->where("{$type}", "{$account}")->select();

        if (!$user) {
            return Result(0, '该用户不存在');
        }
        return Result(1, '', [
            'user' => $user->toArray()[0]
        ]);
    }
}
